Esta questão já tem respostas aqui: Reverter uma string em Python (29 respostas) Fechado há 4 anos. Estou tentando reverter uma string e usando o código abaixo, mas o valor da lista reversa resultante é Nenhum. O código: str_a = 'Isso está mexendo' rev_word = str_a.split () rev_word = rev_word.reverse () rev_word = '' .join (rev_word) Ele retorna o TypeError. Por quê?
2021-01-15 08:11:08
.reverse () retorna Nenhum. Portanto, você não deve atribuí-lo a uma variável. Em vez disso, use: stra = 'Isto é uma string' revword = stra.split () revword.reverse () revword = ''. join (revword) Executei o código no IDEOne para você, para que possa ver a saída. (Observe também que a saída é stringaisThis; você pode usar '' .join (revword), com um espaço, em vez disso.) Observe também que o método fornecido apenas inverte as palavras, não o texto. @ ron.rothman forneceu um link que detalha como reverter uma string em sua totalidade. | Esta é minha maneira favorita de inverter uma string: stra = "Isto é uma string" revword = stra [:: - 1] print (revword) # "gnirts a si sihT ou, se quiser inverter a ordem das palavras: revword = "" .join (stra.split () [:: - 1]) print (revword) # "string a é isto" :) | Várias reversões em uma string: instring = 'Isto é uma string' reversedstring = instring [:: - 1] print reversedstring # gnirts a si sihT wordsreversed = '' .join (palavra [:: - 1] para palavra em instring.split ()) imprimir palavras revertidas # sihT si a gnirts revwordorder = '' .join (palavra por palavra em instring.split () [:: - 1]) imprimir revwordorder # string a é este revwordandorder = '' .join (palavra [:: - 1] para palavra em instring.split () [:: - 1]) imprimir revwordandorder # gnirts a si sihT | Para referência futura, quando um objeto tem um método como [] .reverse (), ele geralmente executa essa ação no objeto (ou seja, a lista é classificada e não retorna nada, Nenhum) em contraste com funções integradas como classificadas, que executam uma ação em um objeto e retorna um valor (ou seja, a lista classificada) | >>> s = 'isto é uma string' >>> s [:: - 1] 'gnirts a siht' >>> '' .join (invertido (s)) 'gnirts a siht' | O loop for itera a string do final (última letra) ao início (primeira letra) >>> s = 'Você também pode tentar isso:]' >>> rev = '' >>> para i no intervalo (len (s) - 1, -1, -1): ... rev + = s [i] >>> rev ']: oot siht yrt nac uoY' | Com base em comentários e outras respostas: str_a = 'isto é uma string' rev_word = '' .join (invertido (str_a.split ())) Afinal, o encadeamento de métodos funciona em Python ... | A reversão da lista pode ser feita de mais de uma maneira. Conforme mencionado nas respostas anteriores, dois são muito proeminentes, um com a função reverse () e dois com o recurso de fatiamento. Estou dando algumas dicas sobre qual devemos preferir. Devemos sempre usar a função reverse () para reverter uma lista Python. Duas razões, uma reversão no local e duas mais rápidas que a outra. Tenho alguns números para apoiar minha resposta, Em [15]: len (l) Fora [15]: 1000 Em [16]:% timeit -n1 l.reverse () 1 loops, melhor de 3: 7,87 µs por loop Em [17]:% timeit -n1 l [:: - 1] 1 loops, melhor de 3: 10 µs por loop Para uma lista de 1000 inteiros, a função reverse () teve um desempenho melhor em comparação com o fatiamento. | Não é a resposta que você está procurando? Navegue por outras questões com a tag python ou faça sua própria pergunta.